home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 147
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin
/
tools
/
zmc3v078
/
zmc3v078.lzh
/
ZMC3FAQ.TXT
< prev
next >
Wrap
Text File
|
1999-12-30
|
11KB
|
257 lines
zmc3 faq(zmc3に関してよくある質問とそれらに対する回答)
========== Z-MUSICってなに? とか、MMLってなに? とか ==============
●zmc3ってなんですか?
→ Z-MUSIC(V3)のzmsファイルを(Z-MUSIC(V3)の)zmdファイルに変換する
プログラムです。
●そもそもZ-MUSICってなんですか?
→ 西川善司氏が開発された、X680x0上で動くMML処理系です。バージョンの
違いによって、現在主に V2, V3と呼ばれる2種類に分類されています。
V2 公式な最終バージョンはV2.08。既に開発は終了している。
主にゲーム用の音源ドライバ用途を想定して開発された。拙作
zmc2はV2のMML仕様を基に作成されている。
V3 V2をベースに、より音楽的な方向性に進化したバージョン。
最新バージョンはV3.02A。MMLレベルではV2と上位互換性を
保っている(ことになっている)が、中身は最早V2とはまったくの
別物と言ってよい。
その内作者さん自らの手によりWindows環境に移植されることに
なっているが、それがどのようになるのかはまだ作者さん自身も
決めかねている様子。
作者さん自身の手によるWindows版を待ちきれずに私が作って
しまったのがzmc3。ANSI Cでコマンドラインアプリとして
作っており、Windows以外の環境でも使える汎用性がウリ。
なお、MML処理系として見た場合、V3の方がより高機能です。
●MMLってなんですか?
→ Music Macro Languageの略です。楽譜を記述する簡易言語のような
もので、例えば c4d4e4 は四分音符のドレミを表します。
要は、音符の情報をテキスト化したものであると考えて差し支え
ありません。
楽譜入力方式やリアルタイム入力方式と比べると:
比較項目 MML入力方式 楽譜入力方式 リアルタイム入力方式
--------------------------------------------------------------------------
・読みやすさ 見づらい 読みやすい 若干慣れが必要
・入力速度 慣れれば速い マウスオンリー 楽器が弾ければ
だと最悪 多分最速
・入力後の 凝れば凝るほど マウスでらくちん 凝ってもそれほど
編集しやすさ きつくなる しかし細かい編集 見難くならない
には不向き
・とっつきやすさ キーボードを触ら マウスが使えれば 楽器が弾けないと
ない人にはちょっと 結構使える 話にならないことあり
[以下項目募集中]
●zmsファイル, zmdファイルってなんですか?
→ zmsファイル (Z-MUSIC(V2/V3)の文法に沿った)MMLが書かれた
テキストファイル。テキストエディタ(メモ帳など)を
用いて、自分で作成するファイル。
zmdファイル (X68kの)Z-MUSICが直接扱える中間言語形式の
(バイナリ)ファイル。zmsファイルをzmc2やzmc3を用いて
コンパイルすることで作成できる。zmdファイルに
対して更に拙作のZtoMやz2m3(それぞれV2/V3に対応)を
通すことにより、SMFファイルに変換することができる。
つまり、テキストエディタでMMLを記述して、拡張子zmsで
セーブした上で、zmc3を通すと zmdファイルが作成されて、それを
z2m3に通せば、smfが出来上がります。
●Z-MUSICのMMLについての資料はありませんか?
→ V3のMML資料については、西川善司氏のwebページなどからダウンロード
出来ます。( http://www.z-z-z.gr.jp/zmusic/ )
V2のMML資料については、マッチュン氏のwebページなどからダウン
ロード出来ます。( http://www.asahi-net.or.jp/~PT6N-MTO/z_sys_down.html )
V2のマニュアルについては、一応私がhtml化したものもあります。
(V3のhtmlマニュアルは現在製作中です)
( http://www2s.biglobe.ne.jp/~yyagi/ )
しかし、いずれも初心者向けの導入ネタに乏しいです。かなりXG
べったりである点を除けば、mute氏のサイトにある入門ネタが
お勧めです。( http://www02.so-net.ne.jp/~mute/ )
●ZtoMやz2m3ってなんですか?
→ どちらも、zmdファイルを標準MIDIフォーマット(SMF)に変換する
プログラムです。zmc2やzmc3が zms→zmd の変換を、ZtoMやz2m3が
zmd→smf(mid) の変換を担当します。
つまり、テキストエディタでMMLを記述して、V2だったらzmc2と
ztomを通せば、V3ならzmc3とz2m3を通せば、smfが出来上がります。
●ZtoMはまだしも、z2m3って名前の由来は?
→ ZtoM=ZMD to MID converterなのは説明不要だと思いますが、
z2m3 は一応 ZMD to(2) MID converter for V3 のつもりです。
ZtoMのバージョンがまだ1.0に満たなかった頃、ごく限られた
メンバーに同コンバータを z2m という名前で提供していました。
しかし当時X680x0用の音楽データコンバータの名前がことごとく
?to? というネーミングルールだったため、ver1.0になった時に
ZtoMと改名しました。
z2m3 はまだV3の主要機能を網羅し切れていないこともあり、
ベータ版扱いだという意味を込めてこのような名前にしてあります。
私が考えるところの「まっとうなでき」になったところで、
ZtoM3 と改名されることでしょう。
●どうして zms→midなコンパイラにしなかったの?
→ z2m3と似たようなプログラムをもう一つ作ってパラでバージョン管理
したくなかったというのが一つ。zms→zmdで作って、z2m3(zmd→mid)と
併用する案の方が開発期間が短く済みそう(すぐ使えそう)というのが一つ。
#実際2ヶ月で(普通の人には)実用上問題ないレベルになりました。
コマンドラインの長さが気になる向きには、お手数ですがバッチ
ファイルなりシェルスクリプトなりをサクサクッと組んじゃって下さい。
ただし、z2m3はまだ完全にV3の機能を網羅しているわけではありません。
旧Z-MUSICユーザにとっての必要最小限の機能は実装済ですが、今後更に
V3の仕様に近づけていく必要があります。
・・・しかしながらMML仕様を拡張しようとするとどうしても
V3 ZMDの仕様に引きずられる部分があるため、そのうち形を変えて
zms→midコンパイラを作ることになるかも知れませんね。
●簡単な使い方を教えて?
→ 下記のようなtest.zmsを作成したとして、
zmc3 test
z2m3 -i test
とすれば、test.midが作成されますので、これを何かのプレーヤで
演奏させて見て下さい。
なお、Windows環境においては、メモ帳から普通に「名前を付けて
保存」で test.zms と指定すると、ファイル名が test.zms.txt に
なってしまいますので、"test.zms" と、ダブルクオーテーションで
くくる必要があります。
以上の操作が面倒でしたら、MASAさんの作成された統合環境
zeditをお使いになるのが便利かと思います。
unix屋さんへの説明は不要でしょう:-)
----test.zmsここから----
.comment テストです。
(AMIDI1,1) / MIDIチャンネル1にトラック1をアサイン
(O120) / テンポ120
.sc55_init / GSリセット送信
(t1) / ここからトラック1の内容を記述
@1 u127 @v127 / 音色1 ベロシティ127 ボリューム127
cdefg / ドレミファソ
(p) / 実際に演奏する
----test.zmsここまで----
●どうしてzmc3を作ったの?
→ 1. 手元のX68kがいつ壊れるかも知れないと言う不安。これが
壊れるとZ-MUSICが使えない→慣れたZ-MUSICを使ってMIDI
データを作ることができなくなってしまう。
2. 少なからず現行のZ-MUSICのMML仕様には不満があり、それを
なんとかしたかった。
●あなたはなぜMML派なの?
→ 1. 昔からこれで慣れてしまっているから・・・
2. データがすべて可読性のあるテキストで残せるから。
3. マウスかちかちで音符入力は勘弁して欲しい。かといって生楽器
演奏できるわけでもなし。
(mml入力ができるシーケンサがあったら速攻で移行するでしょう^^;)
4. 1画面あたりの情報量ではMMLにかなうものはないだろうから。
●他にもMML処理系はあったのでは?
→ 1. Z-MUSICなmmlに慣れてしまっているから・・・
2. 今更フリーフォーマットでもなければ和音・ポルタメントの
簡潔な記述もできないような処理系は使いたくないし・・・
3. いや、実際、z80,90,100 "ceg" とか、[back 'c1eg'] c4e4g4r4
なんてすっきり書けるのって他にないと思う。(自画自賛入りまくり..)
========== Z-MUSICなMMLについて 実用上問題になるところ ==============
●R(休符)と@W(状態保持)ってなにが違うの?
→ 一見この2つは同じように見えますが、微妙に違います。
@wはZ-MUSICのマニュアルにある通り「発音時の状態を維持する」ため、
たとえば
c*0& @w e や c*0& @w& e : 和音が鳴る
c*0& r e や c*0& r& e : 単音が2つ鳴る (@J0の場合)
などと、要するに*0&から@wにつなぐ場合に違いが出てきます。
●和音のタイの記述が面倒だ。
→ 'ceg'&r と、休符にタイ接続することで、
'ceg'&'ceg'相当の動作になります。お試しあれ。
●別トラックの音が同時にならない。
→ 例えば以下のサンプルは、なにも考えずにコンパイルすると
(t1)と(t16)が同時に演奏されません。
(i)
(b1)
(m1 ,100) (a1 ,1)
(m2 ,100) (a2 ,2)
(m3 ,100) (a3 ,3)
(m4 ,100) (a4 ,4)
(m5 ,100) (a5 ,5)
(m6 ,100) (a6 ,6)
(m7 ,100) (a7 ,7)
(m8 ,100) (a8 ,8)
(m9 ,100) (a9 ,9)
(m10,100) (a10,10)
(m11,100) (a11,11)
(m12,100) (a12,12)
(m13,100) (a13,13)
(m14,100) (a14,14)
(m15,100) (a15,15)
(m16,100) (a16,16)
(t1) C4C4C4
(t16) E4R4E4
問題となるのは このMMLをz2m3で-iスイッチをつけてコンパイル
(コンバート)する場合です。-iスイッチは各トラックに初期化コードを
付加するスイッチですが、デフォルトでは初期化コードのデルタタイムが
0となっているため、このままではトラック1~16の初期化コードすべてが
「まったく同時に」送信・実行されます。
YAMAHA系の音源を使用している場合はあまり問題にはなりませんが、
ことRoland系の楽器の場合、一度にたくさんのデータをもらいすぎると
処理が追いつかず、結果としてトラック間の演奏がずれたり、テンポが
もたったりします。
上記の例の場合、回避方法は3つあります。
1) 演奏前に休符を挿入する
(t1) r1C4C4C4
(t16) r1E4R4E4
など。これで、初期化データと同時に演奏データが送られるのを
防ぐことができます。休符は必ずしも全音符である必要はありませんが、
c4とe4を小節の頭に位置させるためにも全音符にするのが無難でしょう。
2) z2m3でコンパイル(コンバート)時、-iスイッチの後ろに数字をつける
例えば -i4 と指定すると、先に述べた初期化コードのデルタタイムが
4となり、全初期データが同時に送られることはなくなります。
3) z2m3でコンパイル(コンバート)時、-iスイッチの後ろに0をつける
-i0 を指定すると、先の初期化コードが @g12 相当のもの「だけ」に
なり、初期データの量そのものを減らせます。
共通コマンド部で .gs_init などを用いている場合、この手が有効です。
●[ARCCn.speed spd]でspdに0を指定すると、z2m3が暴走するんですが。
→v0.99以前のz2m3だと確かに暴走しちゃいます(0で割り算エラーになる)。
v1.00以降をお使いください。
・・・ていう話ではなくて、ここでいうspdとはARCCの変化に要する
tick数なので、1以上でなければいけないわけです。そもそも0が指定
できることがおかしい。というわけで、zmc3 v0.71以降では0は通さなく
なってます。
●●●●●●●